//package cn.bugstack.xfg.dev.tech.self;
//
//import org.springframework.security.crypto.password.PasswordEncoder;
//import org.springframework.stereotype.Component;
//
//import java.nio.charset.StandardCharsets;
//import java.security.MessageDigest;
//import java.security.NoSuchAlgorithmException;
//
//// 不是必须加@Component注解，只是为了可以方便使用
//@Component
//public class MyPasswordEncoder implements PasswordEncoder {
//
//    // 这是盐推荐8字节或更大的，这是我们从源码里知道的
//    final String salt = "butchersoyoung";
//
//    @Override
//    public String encode(CharSequence rawPassword) {
//
//        try {
//            // 使用JDk自带的MD5加密
//            MessageDigest md5 = MessageDigest.getInstance("MD5");
//            // CharSequence转为String，才能获取到字节数组，StandardCharsets.UTF_8是标准的字符集
//            byte[] bytes = md5.digest((rawPassword.toString() + salt).getBytes(StandardCharsets.UTF_8));
//
//            return new String(bytes,StandardCharsets.UTF_8);
//        } catch (NoSuchAlgorithmException e) {
//            e.printStackTrace();
//        }
//        return null;
//    }
//
//    @Override
//    public boolean matches(CharSequence rawPassword, String encodedPassword) {
//        // rawPassword是我们要验证的原密码 ，encodedPassword这是我们加密后的数据库中的密码
//        // 这个方法并不需要我们手动调用，而是由SpringSecurity来调用，我们写好规则就可以了~
//
//        // 这里就没有做过多的验证了，只是为了说明密码是可以自己加密的，自己定匹配规则的
//        if (rawPassword != null && encodedPassword != null){
//            return encode(rawPassword).equals(encodedPassword);
//        }else {
//            return false;
//        }
//    }
//}
//
